/**
 *  菜单高度
 */
var botMenuHeight = 0;
/**
 *  动画执行时间 (毫秒级)
 */
var aniTime = 200;
/**
 *  是否开启底部菜单
 */
var isStart = false;
/**
 *   底部菜单最大高度 默认  400px(可自定义)
 */
var botMenuMaxHeight = 400;
/**
 *  底部菜单回调事件
 */
var botMenuCallBack;

/**
 * 开启 关闭 底部菜单功能
 * @param {*} botMenuObj  菜单内容
 * @param {*} callBack    回调事件(包括开启和关闭)
 */
function botMenuFunc(botMenuObj, callBack) {
    try {
        botMenuCallBack = callBack;
        if (botMenuObj != null) {
            // 观察 该菜单是否开启
            if (isStart) {
                closeBotMenu(botMenuObj,callBack);
                return;
            }
            // 获取菜单内容高度
            botMenuHeight = botMenuObj.height();
            //菜单的高度先和底部菜单最大高度比较
            if (botMenuHeight > botMenuMaxHeight) {
                botMenuObj.height(botMenuMaxHeight);
                botMenuHeight = botMenuMaxHeight;
            } else {
                // 如果发现菜单高度是0，使用最大菜单高度
                if (botMenuHeight == 0) {
                    botMenuHeight = botMenuMaxHeight;
                }

            }
            //先将底部菜单隐藏底部本身高度
            botMenuObj.css('bottom', -botMenuHeight);
            // 显示出底部菜单
            botMenuObj.show();
            // 通过jquery 差值器慢慢改变菜单 bottom 属性
            $({
                // 起始值
                countNum: -botMenuHeight
            }).animate({
                // 最终值
                countNum: 0
            }, {
                // 动画持续时间
                duration: aniTime,
                easing: "linear",
                step: function () {
                    // 设置每步动画计算的数值
                    botMenuObj.css('bottom', Math.floor(this.countNum));
                },
                complete: function () {
                    // 设置动画结束的数值
                    botMenuObj.css('bottom', Math.floor(this.countNum));
                    // 设置开启菜单开关
                    isStart = true;
                    //将开启的结果暴露出去
                    if (botMenuCallBack != null) {
                        botMenuCallBack(isStart);
                    }
                }
            });

        } else {
            console.log("botMenuFunc==请传入底部菜单对象");
        }

    } catch (error) {
        console.log("botMenuFunc==" + error.description);
    }
}
/**
 * 关闭底部菜单
 * @param {} botMenuObj 
 * @param {} callBack 
 */
function closeBotMenu(botMenuObj, callBack) {
    try {
        botMenuCallBack = callBack;
        if (botMenuObj != null) {
            botMenuHeight = botMenuObj.height();
            // 发现底部菜单高度是0 直接隐藏
            if (botMenuHeight == 0) {
                botMenuObj.hide();
            }
            $({
                // 起始值
                countNum: 0
            }).animate({
                // 最终值
                countNum: -botMenuHeight
            }, {
                // 动画持续时间
                duration: aniTime,
                easing: "linear",
                step: function () {
                    // 设置每步动画计算的数值
                    botMenuObj.css('bottom', Math.floor(this.countNum));
                },
                complete: function () {
                    // 设置动画结束的数值
                    botMenuObj.css('bottom', Math.floor(this.countNum));
                    // 设置开启菜单开关
                    isStart = false;
                    // 将关闭菜单的结果暴露出去
                    if(botMenuCallBack!=null){
                        botMenuCallBack(isStart);
                    }
                }
            });
        } else {
            console.log("closeBotMenu==请传入底部菜单对象");
        }
    } catch (error) {
        console.log("closeBotMenu==" + error.description);
    }
}
/**
 * 设置底部菜单最大值
 * @param {*} maxVal 
 */
function setBotMenuMaxVal(maxVal) {
    botMenuMaxHeight = maxVal;
}